package com.example.roleplay.service.llm;

import reactor.core.publisher.Flux;

import java.util.List;

/**
 * LLM（大语言模型）客户端接口
 * 支持流式和非流式文本生成
 */
public interface LLMClient {

    /**
     * 流式聊天，返回实时文本流
     * 
     * @param personaId 角色ID
     * @param sessionId 会话ID
     * @param userText 用户输入文本
     * @param snippets 知识片段上下文
     * @return 流式文本响应
     */
    Flux<String> streamChat(String personaId, String sessionId, String userText, List<String> snippets);

    /**
     * 非流式聊天，返回完整响应
     * 
     * @param personaId 角色ID
     * @param sessionId 会话ID
     * @param userText 用户输入文本
     * @param snippets 知识片段上下文
     * @return 完整文本响应
     */
    String chat(String personaId, String sessionId, String userText, List<String> snippets);

    /**
     * 检查LLM服务是否可用
     * 
     * @return 是否可用
     */
    boolean isHealthy();

    /**
     * 获取支持的模型列表
     * 
     * @return 模型名称列表
     */
    List<String> getSupportedModels();
}